/*
 * Batch.h
 *
 *  Created on: 2011/08/09
 *      Author: naoki
 */

#ifndef INCLUDED_NTENGINE_SCENE_BATCH_H
#define INCLUDED_NTENGINE_SCENE_BATCH_H

namespace NTEngine {
namespace Math {
	class Vector3;
} // namespace Math

namespace Scene {
class Batch;

/**
 * @brief 描画インターフェイス
 * drawすれば絵が出る。動かさなくていい物はこれで足りる。
 */
class Batch {
public:
	///描画
	void draw() const;
	///描画(修正色付き)
	void draw( const Math::Vector3& color, float transparency ) const;

	Batch();
	~Batch();
	Batch( const Batch& );
	operator void*() const;
	Batch& operator=( const Batch& );
	void release();
	bool operator==( const Batch& ) const;
	bool operator!=( const Batch& ) const;
	int referenceCount() const;

	class Impl;
	explicit Batch( Impl* );
private:
	Impl* mImpl;
};

} //namespace Scene
} //namespace NTEngine

#endif // INCLUDED_NTENGINE_SCENE_BATCH_H
